﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.IO;

namespace BabyShop.CP
{
    public partial class category_detail : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {                
                category_id.DataSource = DAO.Category.getAll();
                category_id.DataValueField = "id";
                category_id.DataTextField = "name";
                category_id.DataBind();
                brand_id.DataSource = DAO.Brand.getAll();
                brand_id.DataTextField = "name";
                brand_id.DataValueField = "id";
                brand_id.DataBind();

                if (Request["id"] != "")
                {
                    int id = Convert.ToInt32(Request["id"]);
                    DataTable dt = DAO.Product.find(id);
                    if (dt.Rows.Count > 0)
                    {
                        DataRow dr = dt.Rows[0];
                        category_id.Items.FindByValue(dr["category_id"].ToString()).Selected = true;
                        brand_id.Items.FindByValue(dr["brand_id"].ToString()).Selected = true;
                        txtID.Value = id.ToString();
                        name.Text = dr["name"].ToString();
                        import_from.Text = dr["import_from"].ToString();
                        price.Text = dr["price"].ToString();
                        quantity.Text = dr["quantity"].ToString();
                        description.Text = dr["description"].ToString();
                        sales.Text = dr["sales"].ToString();
                        if (dr["image_path"].ToString().Length > 0)
                        {
                            ShowImage.ImageUrl = "~/images/product_images/" + dr["image_path"].ToString();
                        }
                    }
                }
            }
        }

        protected void btnAdd_click(object sender, EventArgs e)
        {
            DBO.Product p = new DBO.Product();
            try
            {
                string filename = this.saveFile();
                if (filename != "")
                {
                    p.image_path = filename;
                }
                if (string.IsNullOrWhiteSpace(name.Text)) throw new Exception("Xin vui lòng nhập tên");
                if (string.IsNullOrWhiteSpace(import_from.Text)) throw new Exception("Xin vui lòng nhập xuất xứ");
                if (string.IsNullOrWhiteSpace(quantity.Text)) throw new Exception("Xin vui lòng nhập số lượng");
                if (string.IsNullOrWhiteSpace(price.Text)) throw new Exception("Giá bắt buộc phải nhập là một số");
                p.brand_id = Convert.ToInt32(brand_id.SelectedValue);
                p.category_id = Convert.ToInt32(category_id.SelectedValue);
                p.name = name.Text;
                p.import_from = import_from.Text;
                p.price = Convert.ToDouble(price.Text);
                p.quantity = Convert.ToInt32(quantity.Text);
                p.description = description.Text;
                p.sales = 0;
                if (!string.IsNullOrWhiteSpace(sales.Text))
                {
                    p.sales = Convert.ToInt32(sales.Text);
                }

                if (txtID.Value != "")
                {
                    p.id = Convert.ToInt32(txtID.Value);
                    DAO.Product.Update(p);
                }
                else
                {
                    DAO.Product.Insert(p);
                }
                Response.Redirect("product.aspx");
            }
            catch (Exception ex)
            {
                show_message(ex.Message);
            }            
        }

        private string saveFile()
        {
            string filename = "";
            if(image_path.HasFile)
            {
                try
                {
                    if (image_path.PostedFile.ContentLength < 204800)
                    {
                        filename = Path.GetFileName(image_path.FileName);
                        image_path.SaveAs(Server.MapPath("~/images/product_images/") + filename);
                    }
                    else
                        throw new Exception("Kích thước ảnh phải nhỏ hơn 200 kb!");
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.Message);
                }
            }
            return filename;
        }

        private void show_message(string msg)
        {
            popup_error.Visible = true;
            error_message.Text = msg;
        }
    }
}